package com.huike.web.controller.review;


import com.huike.common.core.controller.BaseController;
import com.huike.common.core.domain.AjaxResult;
import com.huike.common.core.page.TableDataInfo;
import com.huike.review.pojo.Review;
import com.huike.review.service.ReviewService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 该Controller主要是为了复习三层架构以及Mybatis使用的，该部分接口已经放开权限，可以直接访问
 * 同学们在此处编写接口通过浏览器访问看是否能完成最简单的增删改查
 */
@RestController
@RequestMapping("/review")
public class MybatisReviewController extends BaseController {

    @Autowired
    private ReviewService reviewService;

    /**=========================================================新增数据============================================*/
    /*
    新增接口1：
		接口名：
			/review/saveData/吴思远/18/男
		请求方式：
			GET请求
		传入参数：
			接口路径上传值/review/saveData/{name}/{age}/{sex}
		返回值：
			{
			  "msg": "成功插入:1条数据",
			  "code": 200
			}
     */
    @GetMapping("/saveData/{name}/{age}/{sex}")
    public AjaxResult saveData(@PathVariable String name,@PathVariable Integer age,@PathVariable String sex){
        int i = reviewService.saveData(name,age,sex);
        return AjaxResult.success("成功插入:"+i+"条数据");
    }

    /*
    新增接口2：
		接口名：
			/review/saveData
		请求方式：
			POST请求
		传入参数：
			{
				"name":"吴思敏",
				"age":18,
				"sex":"女"
			}
		返回值：
			{
			  "msg": "成功插入:1条数据",
			  "code": 200
			}
     */
    @PostMapping("/saveData")
    public AjaxResult saveData(@RequestBody Review review){
        int i = reviewService.saveData(review);
        return AjaxResult.success("成功插入:"+i+"条数据");
    }
    /**=========================================================删除数据=============================================*/
    /*
    删除接口：
		接口名：
			/review/remove/25
		请求方式：
			DELETE请求
		传入参数：
			/review/remove/{id}
		返回值：
			{
			  "msg": "成功删除:1条数据",
			  "code": 200
			}
     */
    @DeleteMapping("/remove/{id}")
    public AjaxResult remove(@PathVariable Integer id){
        int i = reviewService.remove(id);
        return AjaxResult.success("成功删除:"+i+"条数据");
    }
    /**=========================================================修改数据=============================================*/
    /*
    修改接口：
		接口名：
			/review/update
		请求方式：
			POST请求
		传入参数：
			{
				"id":2,
				"name":"吴思鹏",
				"age":18,
				"sex":"男"
			}
		返回值：
			{
			  "msg": "修改成功",
			  "code": 200
			}
     */
    @PostMapping("/update")
    public AjaxResult update(@RequestBody Review review){
        reviewService.update(review);
        return AjaxResult.success("修改成功");
    }
    /**=========================================================查询数据=============================================*/
    /*
    单条件查询，根据id来查询数据：
		接口名：
			/review/getById?id=1
		请求方式：
			GET请求
		传入参数：
			id
		返回值：
			{
			  "msg": "操作成功",
			  "code": 200,
			  "data": {
				"createBy": "1",
				"createTime": "2022-04-17 18:53:09",
				"updateBy": "1",
				"updateTime": "2022-04-17 18:53:09",
				"id": 1,
				"name": "张三",
				"age": 18,
				"sex": "男"
			  }
			}
     */
    @GetMapping("/getById")
    public AjaxResult getById(Integer id){
        Review review = reviewService.getById(id);
        return AjaxResult.success("操作成功",review);
    }
    /*
    分页查询：
		接口名：
			/review/getDataByPage?pageNum=1&pageSize=10
		请求方式：
			GET请求
		传入参数：
			pageNum:当前页
			pageSize:每页显示条数
		返回值：
			{
			  "total": 16,
			  "rows": [
				{
				  "createBy": "1",
				  "createTime": "2022-04-17 18:53:09",
				  "updateBy": "1",
				  "updateTime": "2022-04-17 18:53:09",
				  "id": 1,
				  "name": "张三",
				  "age": 18,
				  "sex": "男"
				}...
			  ],
			  "code": 200,
			  "msg": "查询成功",
			  "params": null
			}
     */
    @GetMapping("/getDataByPage")
    public TableDataInfo getDataByPage(){
        startPage();
        List<Review> list = reviewService.getDataByPage();
        return getDataTablePage(list);
    }
}